<template>
  <div id="app">
    <el-dialog :visible="true">
      <div ref="printText">
        <p class="content">
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
          将WEB页面直接导出为pdf文件是经常会用到的一个功能，尤其是各种报表系统。总结了一下目前几种主流的做法：
          在后端用代码生成pdf文件，比如iText一类；
          在后端抓取页面并生成pdf文件，比如phantomjs一类；
          在前端用js直接生成pdf文件；
          方案3的优势在于前端直接生成，所见即所得。今天要探索的就是html2canvas和jspdf，前者用于将页面元素render生成canvas，后者用于将canvas生成pdf文档。需要注意的是，这种方法对IE系列支持不好。
          html2canvas的主页： jspdf的主页
          两者的使用都比较简单，网上的文章很多，但是对于长网页导出，jspdf是不支持分页的，目前有一种做法是addImage时控制起始纵坐标为负值，然后超出页面底边的自动隐藏，就达到显示上的分页效果了，但这种方法无法给pdf页面留页边距，因此本文主要针对分页与页边距进行探索。
          基本思路是对得到的canvas进行切割，按A4纸大小并留边距后的比例进行剪裁，切出一页一页的内容来，再分别加到pdf中。上个DEMO：
          -----------------------------------
          ©著作权归作者所有：来自51CTO博客作者BoyTNT的原创作品，请联系作者获取转载授权，否则将追究法律责任
          页面直接导出为PDF文件，支持分页与页边距
        </p>
        <p>123</p>
      </div>
      <div slot="footer">
        <el-button @click="handleDownload">下载</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
export default {
  name: 'App',
  methods: {
    handleDownload() {
      let dom = this.$refs.printText
      let name = 'cs'
      let options = {
        orientation: 'l',
        x: 40,
        y: 40
      }
      this.getPdf(dom, name, options)
    }
  }
}
</script>

<style>
#app {
  margin: 0;
  padding: 0;
}
.content {
  font-size: 16px;
}
</style>
